import { RawDraftContentState } from "draft-js"

export interface IUser {
    id: string,
    email: string,
    role: string,
    awardCount: number,
    name?: string,
    secondName?: string,
    surname?: string,
    birthDate?: string,
    banned: boolean,
    banReason?: string,
    locality?: string,
    school?: string,
    portfolio?: string,
    completedTask: number[]
}
export interface IDiscipline {
    id: number,
    tittle: string,
    removed: boolean,
    groupId?: number
}
export interface ITheme {
    id: number,
    tittle: string,
    removed: boolean,
    award: number,
    disciplineId: number,
    level: number
}
export interface ILecture {
    id: number,
    tittle: string,
    removed: boolean,
    ThemeId: number,
    content: string,
    award: number
}
export interface ITest {
    id: number,
    tittle: string,
    removed: boolean,
    award: number,
    ThemeId: number,
    content: string
}

export interface ICreateLesson {
    tittle: string,
    award: number,
    testIds?: number[]
    themeId?: number,
    content?: RawDraftContentState
}

export interface IUpdateLesson {
    tittle?: string,
    award?: number,
    ThemeId?: number,
    testIds?: number[]
    content?: RawDraftContentState
}

export interface ILesson {
    id: number,
    tittle: string,
    removed: boolean,
    award: number,
    themeId: number,
    testIds: number[]
    content: RawDraftContentState
}


export interface IModelDto {
    name: string,
    modelFilePath: string,
    meshes: {
        originalMeshName: string,
        interactive: boolean,
        name?: string,
        description?: string,
    }[]
}

export interface IModel {
    id: number,
    name: string,
    modelFilePath: string,
    meshes: {
        originalMeshName: string,
        interactive: boolean,
        name?: string,
        description?: string,
    }[]
}

export interface IUploadFileDto {
    file: File[],
}

export interface IFile {
    id: number,
    filename: string,
    path: string,
    mimetype: string,
}


export interface IImage {
    id: number,
    name: string,
    imageFilePath: string,
}

export interface IImageDto {
    name: string,
    imageFilePath: string,
}

export interface IQuestion {
    question: string,
    choices: string[],
}

export interface CreateTestDTO {
    needTrueAnswers: number,
    questions: {
        question: string,
        choices: string[]
    }[],
    answers: {
        question: string,
        answer: string,
    }[]
}

export interface ITest {
    id: number,
    needTrueAnswers: number,
    questions: {
        question: string,
        choices: string[]
    }[],
    answers: {
        question: string,
        trueAnswer: string,
    }[]
}